﻿using ProyectoSalvadorDelMundo.Helpers;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ProyectoSalvadorDelMundo.Asambleas.IngresoAsistencia
{
    public partial class IngresoAsistencia : PaginaBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                // Navegacion
                linkNav.NavigateUrl = ConfigurationManager.AppSettings.GetValues("linkNav-NavigateUrl")[0];
                linkNav.Text = ConfigurationManager.AppSettings.GetValues("linkNav-Text")[0];

                lblNavActiva.Text = ConfigurationManager.AppSettings.GetValues("lblNavActiva-Text")[0];
                lblNavActiva.CssClass = ConfigurationManager.AppSettings.GetValues("lblNavActiva-CssClass")[0];

                // Titulo
                lblTitulo.Text = ConfigurationManager.AppSettings.GetValues("lblTitulo-Text")[0];
                lblTitulo.CssClass = ConfigurationManager.AppSettings.GetValues("lblTitulo-CssClass")[0];

                // Agregar
                btnAgregar.Text = ConfigurationManager.AppSettings.GetValues("btnAgregar-Text")[0];
                btnAgregar.ToolTip = ConfigurationManager.AppSettings.GetValues("btnAgregar-ToolTip")[0];
                btnAgregar.CssClass = ConfigurationManager.AppSettings.GetValues("btnAgregar-CssClass")[0];

                // Buscar 
                btnBuscar.ImageUrl = ConfigurationManager.AppSettings.GetValues("btnBuscar-ImageUrl")[0];
                btnBuscar.ToolTip = ConfigurationManager.AppSettings.GetValues("btnBuscar-ToolTip")[0];
                btnBuscar.AlternateText = ConfigurationManager.AppSettings.GetValues("btnBuscar-AlternateText")[0];
                btnBuscar.CssClass = ConfigurationManager.AppSettings.GetValues("btnBuscar-CssClass")[0];

                txtBuscar.Attributes.Add("placeholder", ConfigurationManager.AppSettings.GetValues("txtBuscar-placeholder")[0]);
                txtBuscar.CssClass = ConfigurationManager.AppSettings.GetValues("txtBuscar-CssClass")[0]; ;

                // Popup
                //-----------------
                lblAccion.Visible = false;
                lblAccion.Enabled = false;
                lblAccion.Text = string.Empty;

                pnlAgregarEditar.CssClass = "modal-dialog modal-lg";
                pnlAgregarEditar.Attributes.Add("Style", "display: none");


                // Popup Header
                btnPopX.Text = "X";
                btnPopX.CssClass = "close";
                //btnPopX.Attributes.Add("data-dismiss", "modal");


                lblPopupTitulo.CssClass = "modal-title";

                // Popup Contenido
                txtId.Enabled = false;

                lblNombre.Text = "Permiso";
                lblNombre.AssociatedControlID = "txtNombre";
                lblNombre.CssClass = "col-sm-2 control-label";

                lblServicioRelacionado.Text = "Servicio Relacionado";
                lblServicioRelacionado.AssociatedControlID = "ddlServicioRelacionado";
                lblServicioRelacionado.CssClass = "col-sm-2 control-label";

                txtNombre.Attributes.Add("placeholder", "Ingresar Nombre");
                txtNombre.CssClass = "form-control";

                ddlServicioRelacionado.CssClass = "form-control";
                // Popup Footer
                btnPopCerrar.Text = "Cerrar";
                btnPopCerrar.CssClass = "btn btn-default";
                //btnPopCerrar.Attributes.Add("data-dismiss", "modal");

                btnPopGuardar.Text = "Guardar Cambios";

                btnPopGuardar.OnClientClick = "Guardar";

                this.Session["Grupo"] = "18";
                // Cargar datos.
                this.Page.Form.DefaultButton = btnBuscar.ID;
                this.Page.Form.DefaultFocus = txtBuscar.ID;
                if (RefrescarAsambleas())
                {
                    linkIrMinisterios.Text = "";
                    linkIrMinisterios.Enabled = false;
                    ddl.SelectedIndex = 0;

                    if (RefrescarProgramacionesAsambleas())
                    {
                        linkIrMinisterios.Text = "";
                        btnAgregar.Enabled = true;
                        linkIrMinisterios.Enabled = false;
                        ddlGrupoServicio.SelectedIndex = 0;
                        RefrescarDatos();
                    }
                    else
                    {
                        lsvLista.DataSource = null;
                        lsvLista.DataBind();
                        linkIrMinisterios.Text = "Agrear Grupos Servicios";
                        btnAgregar.Enabled = false;
                        btnBuscar.Enabled = false;
                        linkIrMinisterios.Enabled = true;
                        linkIrMinisterios.NavigateUrl = "~/CatalogosGrupales/GruposServicios/GruposServicios.aspx";
                    }
                }
                else
                {
                    btnAgregar.Enabled = false;
                    btnBuscar.Enabled = false;
                    linkIrMinisterios.Text = "Agrear Asambleas";
                    linkIrMinisterios.Enabled = true;
                    linkIrMinisterios.NavigateUrl = "~/Asambleas/Asamblea/Asambleas.aspx";
                }

            }
        }

        protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (RefrescarProgramacionesAsambleas())
            {
                linkIrMinisterios.Text = "";
                linkIrMinisterios.Enabled = false;
                ddlGrupoServicio.SelectedIndex = 0;
                RefrescarDatos();
            }
            else
            {
                lsvLista.DataSource = null;
                lsvLista.DataBind();
                linkIrMinisterios.Text = "Agrear Servicios";
                linkIrMinisterios.Enabled = true;
            }
        }
        protected void ddlGrupoServicio_SelectedIndexChanged(object sender, EventArgs e)
        {
            RefrescarDatos();
        }

        private DataTable Listar()
        {
            var oCn_Servicios = new CN.Servicios();
            if (txtBuscar.Text != string.Empty)
            {
                return CN.Helpers.EjecutarConsultaText("SELECT 	id_permisos, " +
                                                        "       servidores.id_servidor," +
                                                        "	    concat(servidores.nombre, ' ',servidores.apellido) AS nombre  " +
                                                        "       permiso " +
                                                        "	FROM `sistema-sas`.permisos " +
                                                        "		INNER JOIN servidores ON servidores.id_servidor = permisos.id_servidor " +
                                                        "    WHERE id_programaciones_asambleas = '" + Convert.ToInt64(ddlGrupoServicio.SelectedValue) + "' " +
                                                        "          servidores.nombre LIKE '" + txtBuscar.Text + "';");
            }
            else
            {
                return CN.Helpers.EjecutarConsultaText("SELECT 	id_permisos, " +
                                                        "       servidores.id_servidor," +
                                                        "	    concat(servidores.nombre, ' ',servidores.apellido) AS nombre,  " +
                                                        "       permiso " +
                                                        "	FROM `sistema-sas`.permisos " +
                                                        "		INNER JOIN servidores ON servidores.id_servidor = permisos.id_servidor " +
                                                        "    WHERE id_programaciones_asambleas = '" + Convert.ToInt64(ddlGrupoServicio.SelectedValue) + "';");
            }
        }

        private DataTable ListarAsambleas()
        {
            var oCn_Asambleas = new CN.Asambleas();
            return oCn_Asambleas.Listar(Convert.ToInt64(this.Session["Grupo"]));
        }

        private DataTable ListarProgramacionesAsambleas()
        {
            return CN.Helpers.EjecutarConsultaText("SELECT id_programacion_asamblea,DATE_FORMAT(fecha,'%d/%m/%Y') AS fecha FROM programaciones_asambleas WHERE id_asamblea = '" + ddl.SelectedValue + "'; ");
        }

        private void RefrescarDatos()
        {
            var ListaServicios = Listar();
            lsvLista.DataSource = ListaServicios;
            lsvLista.DataBind();
        }

        private Boolean RefrescarAsambleas()
        {
            var ListaAsambleas = ListarAsambleas();
            ddl.DataSource = ListaAsambleas;
            ddl.DataTextField = "NOMBRE";
            ddl.DataValueField = "ID_ASAMBLEA";
            ddl.DataBind();
            return ListaAsambleas.Rows.Count > 0 ? true : false;
        }

        private Boolean RefrescarProgramacionesAsambleas()
        {
            var ListaGruposServicios = ListarProgramacionesAsambleas();
            ddlGrupoServicio.DataSource = ListaGruposServicios;
            ddlGrupoServicio.DataTextField = "fecha";
            ddlGrupoServicio.DataValueField = "id_programacion_asamblea";
            ddlGrupoServicio.DataBind();
            return ListaGruposServicios.Rows.Count > 0 ? true : false;
        }


        protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
        {
            (lsvLista.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
            RefrescarDatos();
        }

        protected void Agregar(object sender, EventArgs e)
        {
            ddlServicioRelacionado.DataSource = CN.Helpers.EjecutarConsultaText("SELECT 	servidores.id_servidor,  " +
                                                                    "		concat(nombre, ' ',apellido) AS Nombre  " +
                                                                    "	FROM servidores  " +
                                                                    "	WHERE 	id_servidor NOT IN (SELECT id_servidor FROM permisos WHERE id_asamblea = '" + ddl.SelectedValue + "' )  " +
                                                                    "		AND id_asamblea = '" + ddl.SelectedValue + "'; ");
            ddlServicioRelacionado.DataTextField = "Nombre";
            ddlServicioRelacionado.DataValueField = "id_servidor";
            ddlServicioRelacionado.DataBind();

            if(ddlServicioRelacionado.Items.Count <1)
            {
                MostarError("No hay servidores asignados a la asamblea actual.");
                return;
            }

            txtNombre.Text = string.Empty;

            txtNombre.Enabled = true;
            ddlServicioRelacionado.Enabled = true;

            lblAccion.Text = "Agregar";
            lblPopupTitulo.Text = "Agregar Servicio";
            btnPopGuardar.Text = "Agregar";
            btnPopGuardar.CssClass = "btn btn-primary";
            txtNombre.Focus();
            popup.Show();
        }

        protected void Editar(object sender, EventArgs e)
        {
            ddlServicioRelacionado.DataSource = CN.Helpers.EjecutarConsultaText("SELECT 	servidores.id_servidor,  " +
                                                                    "		concat(nombre, ' ',apellido) AS Nombre  " +
                                                                    "	FROM servidores  " +
                                                                    "	WHERE  id_asamblea = '" + ddl.SelectedValue + "'; ");
            ddlServicioRelacionado.DataTextField = "Nombre";
            ddlServicioRelacionado.DataValueField = "id_servidor";
            ddlServicioRelacionado.DataBind();

            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            Label lblNombre = (Label)item.FindControl("permiso");
            Label lblID_SERVICIO_RELACIONADO = (Label)item.FindControl("ID_Servidor");
            txtId.Text = lblID.Text;
            txtNombre.Text = lblNombre.Text;

            ddlServicioRelacionado.SelectedValue = lblID_SERVICIO_RELACIONADO.Text;
            txtNombre.Focus();
            txtNombre.Enabled = true;
            ddlServicioRelacionado.Enabled = true;
            lblAccion.Text = "Editar";
            lblPopupTitulo.Text = "Editar Servicio";
            btnPopGuardar.Text = "Guardar Cambios";
            btnPopGuardar.CssClass = "btn btn-primary";

            popup.Show();
        }
        protected void Eliminar(object sender, EventArgs e)
        {
            ddlServicioRelacionado.DataSource = CN.Helpers.EjecutarConsultaText("SELECT 	servidores.id_servidor,  " +
                                                                    "		concat(nombre, ' ',apellido) AS Nombre  " +
                                                                    "	FROM servidores  " +
                                                                    "	WHERE  id_asamblea = '" + ddl.SelectedValue + "'; ");
            ddlServicioRelacionado.DataTextField = "Nombre";
            ddlServicioRelacionado.DataValueField = "id_servidor";
            ddlServicioRelacionado.DataBind();

            ListViewDataItem item = (ListViewDataItem)(sender as Control).NamingContainer;
            Label lblID = (Label)item.FindControl("ID");
            Label lblNombre = (Label)item.FindControl("permiso");
            Label lblID_SERVICIO_RELACIONADO = (Label)item.FindControl("ID_Servidor");
            txtId.Text = lblID.Text;
            txtNombre.Text = lblNombre.Text;

            ddlServicioRelacionado.SelectedValue = lblID_SERVICIO_RELACIONADO.Text;

            txtNombre.Enabled = false;
            ddlServicioRelacionado.Enabled = false;
            lblAccion.Text = "Eliminar";
            lblPopupTitulo.Text = "Eliminar Servicio";
            btnPopGuardar.Text = "Eliminar";
            btnPopGuardar.CssClass = "btn btn-danger";

            popup.Show();
        }

        protected void Guardar(object sender, EventArgs e)
        {
            var strResultado = string.Empty;

            if (lblAccion.Text == "Eliminar")
            {
                strResultado = CN.Helpers.EjecutarComandoText("DELETE FROM `sistema-sas`.`permisos` WHERE id_permisos = '" + txtId.Text + "';");

                DataPager pgr = lsvLista.FindControl("DataPager1") as DataPager;
                if (pgr != null && lsvLista.Items.Count != pgr.TotalRowCount)
                {
                    pgr.SetPageProperties(0, pgr.MaximumRows, false);
                }
            }
            else
            {

                if (lblAccion.Text == "Editar")
                {
                    strResultado = CN.Helpers.EjecutarComandoText("UPDATE `sistema-sas`.`permisos` " +
                                                                    "  SET " +
                                                                    "  `id_grupo` = " + this.Session["Grupo"].ToString() + ", " +
                                                                    "  `id_asamblea` = " + ddl.SelectedValue + ", " +
                                                                    "  `id_programaciones_asambleas` = " + ddlGrupoServicio.SelectedValue + ", " +
                                                                    "  `id_servidor` = " + ddlServicioRelacionado.SelectedValue + ", " +
                                                                    "  `permiso` = '" + txtNombre.Text + "' " +
                                                                    "  WHERE `id_permisos` = '" + txtId.Text + "'; ");
                }
                else
                {
                    strResultado = CN.Helpers.EjecutarComandoText("INSERT INTO `sistema-sas`.`permisos`(`id_grupo`,`id_asamblea`,`id_programaciones_asambleas`,`id_servidor`,`permiso`)VALUES(" + this.Session["Grupo"].ToString() + "," + ddl.SelectedValue + "," + ddlGrupoServicio.SelectedValue + "," + ddlServicioRelacionado.SelectedValue + ",'" + txtNombre.Text + "');");
                }


                popup.Hide();
            }
            switch (strResultado)
            {
                case "El registro no se puede borrar por que tiene registros relacionados.":
                    MostarError(strResultado);
                    break;

                case "Ocurrio un error inesperado al guardar los cambios.":
                    MostarError(strResultado);
                    break;
                default:
                    MostarExito(strResultado);
                    break;
            }

            RefrescarDatos();
        }

        protected void Buscar(object sender, EventArgs e)
        {
            RefrescarDatos();

        }

        protected void CerrarPop(object sender, EventArgs e)
        {
            popup.Hide();
        }
    }
}